void main() {
  // 获取当前时间
  DateTime now = DateTime.now();
  print('当前时间: $now');

  // 创建指定时间
  DateTime specificDate = DateTime(2024, 1, 1, 12, 30);
  print('指定时间: $specificDate');

  // 时间格式化函数，支持自定义格式
  String formatDateTime(
    DateTime dateTime, [
    String format = 'yyyy-MM-dd hh:mm:ss',
  ]) {
    Map<String, dynamic> o = {
      'M+': dateTime.month, // 月份
      'd+': dateTime.day, // 日
      'h+': dateTime.hour, // 小时
      'm+': dateTime.minute, // 分钟
      's+': dateTime.second, // 秒
      'q+': ((dateTime.month + 2) ~/ 3), // 季度
      'S': dateTime.millisecond, // 毫秒
    };

    // 处理年份
    if (format.contains(RegExp(r'(y+)'))) {
      format = format.replaceAllMapped(RegExp(r'(y+)'), (Match match) {
        String yearStr = dateTime.year.toString();
        return yearStr.substring(yearStr.length - match.group(0)!.length);
      });
    }

    // 处理其他时间单位
    o.forEach((String k, dynamic value) {
      RegExp regExp = RegExp('($k)');
      if (format.contains(regExp)) {
        format = format.replaceAllMapped(regExp, (Match match) {
          String v = value.toString();
          return match.group(0)!.length == 1 ? v : v.padLeft(2, '0');
        });
      }
    });

    return format;
  }

  print('格式化后的当前时间: ${formatDateTime(now)}');

  // 时间的加减操作
  DateTime futureDate = now.add(Duration(days: 7));
  print('7天后: ${formatDateTime(futureDate)}');

  DateTime pastDate = now.subtract(Duration(hours: 24));
  print('24小时前: ${formatDateTime(pastDate)}');

  // 增加月份
  DateTime nextMonth = DateTime(now.year, now.month + 1, now.day);
  print('下个月同一天: ${formatDateTime(nextMonth)}');

  // 时间比较
  if (futureDate.isAfter(now)) {
    print('futureDate 在 now 之后');
  }

  // 计算时间差
  Duration difference = futureDate.difference(now);
  print('相差的天数: ${difference.inDays}');
}
